package com.ruoyi.system.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.common.core.domain.entity.H5User;
import com.ruoyi.system.dto.H5UserDetailDTO;
import com.ruoyi.system.dto.H5UserProjectDTO;

import java.util.List;

/**
 * H5用户服务接口
 *
 * @author ruoyi
 */
public interface IH5UserService extends IService<H5User> {

    /**
     * 根据用户名查询H5用户
     *
     * @param userName 用户名
     * @return H5用户信息
     */
    H5User selectUserByUsername(String userName);

    /**
     * 根据手机号查询H5用户
     *
     * @param phoneNumber 手机号
     * @return H5用户信息
     */
    H5User selectUserByPhoneNumber(String phoneNumber);

    /**
     * 根据第三方openid查询H5用户
     *
     * @param thirdOpenid 第三方账号ID
     * @return H5用户信息
     */
    H5User selectUserByThirdOpenid(String thirdOpenid);

    /**
     * 新增H5用户
     *
     * @param h5User H5用户信息
     * @return 结果
     */
    int insertH5User(H5User h5User);

    /**
     * 更新H5用户信息
     *
     * @param h5User H5用户信息
     * @return 结果
     */
    int updateH5User(H5User h5User);

    /**
     * 更新用户登录信息（IP、时间、设备）
     *
     * @param userId 用户ID
     * @param loginIp 登录IP
     * @param loginDevice 登录设备
     * @return 结果
     */
    int updateLoginInfo(Long userId, String loginIp, String loginDevice);

    /**
     * 禁用H5用户账号
     *
     * @param userId 用户ID
     * @param operator 操作者
     * @return 结果
     */
    boolean disableH5User(Long userId, String operator);

    /**
     * 启用H5用户账号
     *
     * @param userId 用户ID
     * @param operator 操作者
     * @return 结果
     */
    boolean enableH5User(Long userId, String operator);

    /**
     * 根据H5用户ID查询关联的项目列表
     *
     * @param h5UserId H5用户ID
     * @return 关联的项目列表
     */
    List<H5UserProjectDTO> getProjectsByH5UserId(Long h5UserId);

    /**
     * 获取H5用户详情（包含关联项目）
     *
     * @param userId 用户ID
     * @return H5用户详情
     */
    H5UserDetailDTO getH5UserDetail(Long userId);
}